#ifndef _GUI_MANAGER_
#define _GUI_MANAGER_

#include <Windows.h>
#include <map>
#include "Core/Pattern/Singleton.h"

class Core::GUI::IWidget;
class Core::GUI::IWindow;
class Core::GUI::IButton;

namespace GUI
{
	namespace Win32
	{
		class GUIManager : public Core::Singleton<GUIManager>
		{
		public:
			Core::GUI::IWindow* GetWindow(HWND _hWnd) const;
			Core::GUI::IButton* GetButton(HWND _hWnd) const;

		private:

			Core::GUI::IWidget* GetWidget(HWND _hWnd, Core::GUI::WidgetType _type) const;

			std::map<HWND, Core::GUI::IWidget*> m_hWidgets;
		};
	}
}

#endif // _GUI_MANAGER_
